package cn.jetpiece.cloud.joss.api.object.model.params;

import cn.jetpiece.cloud.joss.api.object.model.enums.AclEnum;
import cn.jetpiece.cloud.joss.api.object.model.enums.PutObjectModelEnum;
import cn.jetpiece.cloud.joss.api.object.model.result.JossPartEtag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.util.List;

/**
 * @author XuJZ
 * @since 2020/9/10
 */
@Data
@ApiModel
public class JossPostObject {

    /**
     * 预签名,生成访问、上传预签名
     */
    @ApiModelProperty(value = "预签名,生成访问、上传预签名")
    private String preSign;

    /**
     * 预签名超时时间,单位:秒,默认6分钟
     */
    @ApiModelProperty(value = "预签名超时时间,单位:秒,默认6分钟")
    private Long preExpires;

    /**
     * 初始化分片上传,表明这是分片上传任务
     */
    @ApiModelProperty(value = "初始化分片上传,表明这是分片上传任务")
    private String uploads;

    /**
     * 合并分片上传，分片上传任务Id
     */
    @ApiModelProperty(value = "合并分片上传，分片上传任务Id")
    private String uploadId;

    /**
     * 上传对象模式
     * 1: 流式上传
     * 2: Base64编码上传
     * 3: 通过Url上传
     * 默认流式上传
     *
     * @see PutObjectModelEnum
     */
    @ApiModelProperty(value = "上传模式")
    private Integer model = 1;

    /**
     * 数据权限(1:私有,2:公共可读),没传使用桶策略,Minio对象无法设置
     *
     * @see AclEnum
     */
    @ApiModelProperty(value = "数据权限(1:私有,2:公共可读),没传使用桶策略,Minio对象无法设置")
    private Integer acl;

    /**
     * 内容类型
     */
    @ApiModelProperty(value = "内容类型")
    private String contentType;

}
